AWS Budgets のアラートを AWS Chatbot へ通知してみた!
園部です。
AWS のコストアラートを AWS Budgets と AWS Chatbot を使って Slack へ通知する方法へ変更しました。以前は Lambda で実行した結果を Slack に通知していたのですが、Python 2.x 系だったので切り替えるタイミングで、フルマネージドに変えるのが目的となります!
こういうイメージがゴールです。
利用するサービス
AWS サービスは バージニア北部(us-east-1)リージョンを利用します。
- AWS Budgets
- AWS Chatbot
- AWS SNS
- AWS CloudWatch
- IAM Role
- Slack
やってみた
SNS トピック作成
SNS
>>> トピック
>>> トピックの作成
を選択
名前に任意のものを入力 >>> トピックの作成
を選択
アクセスポリシーへ追記を行います。 表示画面から ARN をどこかにメモしておきます。
編集
を選択
アクセスポリシーを展開
JSON 部分へ権限を追加します。
以下参考情報 [1] に記載されている JSON をコピーして "your topic ARN" を先ほどメモした SNS の ARN へ置き換えて、追加します。
変更の保存
を選択
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "E.g., AWSBudgetsSNSPublishingPermissions", "Effect": "Allow", "Principal": { "Service": "budgets.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-1:*AWS Account ID*:budgets-chatbot-integration" }, { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "SNS:GetTopicAttributes", "SNS:SetTopicAttributes", "SNS:AddPermission", "SNS:RemovePermission", "SNS:DeleteTopic", "SNS:Subscribe", "SNS:ListSubscriptionsByTopic", "SNS:Publish", "SNS:Receive" ], "Resource": "arn:aws:sns:us-east-1:*AWS Account ID*:budgets-chatbot-integration", "Condition": { "StringEquals": { "AWS:SourceOwner": "*AWS Account ID*" } } } ] }
AWS Chatbot 作成
AWS Chatbot
>>> 設定済みクライアント
>>> 新しいクライアントの作成
を設定
Slack
>>> 設定
を選択
今回、通知先となる Slack へログインします。
許可する
を選択
新しいチャネルを設定
を選択
プライベートチャンネルへ通知したい場合は以下に注意が必要です。
設定を進めます。
既存で IAM Role を作成していない場合は、この場で作成します。
先ほど作成した SNS を指定 >>> 設定
を選択
SNS 画面に戻ると、サブスクリプションが作成されています。
AWS Budgets 作成
AWS Budgets
>>> 予算の作成
を選択
コスト予算
>>> 予算の設定
を選択
予算を設定していきます。
アラートの設定
を選択
今回は、通知されることを確認したいので、しきい値を最小(0.1)に指定しています。 先に作成した SNS の ARN を入力すると権限チェックが行われて、問題なければ 「レ」 が表示されます。
予算の確認
>>> 作成
を選択
しばらくすると 指定した Slack チャンネルに通知が届きます。
参考情報
[1] AWS Billing and Cost Management
- ユーザーガイド - 予算の通知に関する Amazon SNS トピックの作成
[2] AWS Billing and Cost Management
- ユーザーガイド - Amazon Chime および Slack での予算アラートの受信